【羊城杯 2020】easyre
[羊城杯 2020]easyre
这题中为了方便,
第一次加密的密文叫enc1,
第二次加密后叫enc2,
第三次加密后叫enc3
exe差壳无壳ida发现有一串疑似base64的密文和3个加密函数
三个,足足三个,刚看还是觉得有点吓人,冷静下来分析
是明文经过3轮加密变成密文,然后密文和给出的疑似base64的字符进行比对
所以疑似base64的字符串就是enc3
先从第三加密个开始分析
跟进encode_three
这是个凯撒加密,大写字母,小写字母,数字分别在自己的范围中替换成enc2字母后数第3个字母(这里的明文是经过前两轮加密后的密文)
写个脚本给换回来:
1 | def caesar_cipher(text, shift): |
换过来后跟进第二个加密
这是把en2分成4个部分,而en2长度刚好是52,恰好符合每段13个字符
这段加密是吧明文的4个部分进行了位置交换,
明文第三段 → 密文第一段
明文第一段 → 密文第二段
明文第四段 → 密文第三段
明文第二段 → 密文第四段
所以只需要把每段密文换回去就能等出enc1
最后看第一个加密
其中alphabet是标准base64表
跟进cmove_bits后就是我写的注释内容
综合来看就是一个标准的base64,
所以把enc1交给解密网站就好了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 哥布林的❤秘密❤洞穴!